home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / util / shell / axuucp_0_1.lha / axsh / rexx / rn-addgroup.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1995-03-22  |  3.4 KB  |  130 lines

  1. /****** axuucp/rn-addgroup ***************************************************
  2. *
  3. *   NAME
  4. *    rn-addgroup - Add a new group to the system
  5. *
  6. *   SYNOPSIS
  7. *    rx rn-addgroup.rexx [groupname]
  8. *
  9. *   DESCRIPTION
  10. *    This script adds a new group to the AXsh news system.  The .lowest and
  11. *    .next files will be initialized and it will be added to the AXsh
  12. *    /usr/spool/news/NewsGroup file.
  13. *
  14. *   AUTHOR
  15. *    Tobias Ferber <tf@ganymed.hall.sub.org>
  16. *
  17. ******************************************************************************
  18. *
  19. */
  20.  
  21. axnews     = axconfig("news")
  22. newsgroups = axconfig("newsgroupfile")
  23.  
  24. group_name = arg(1)
  25.  
  26. if (words(group_name) < 1) then do
  27.   say "usage: rx rn-addgroup.rexx [groupname]"
  28.   exit
  29.   end
  30.  
  31. group_path = axnews || translate(group_name,'/','.')
  32.  
  33. if exists(group_path) then do
  34.   say "Newsgroup already exists:" group_name
  35.   exit 5
  36.   end
  37.  
  38. say group_path
  39. call makepath(group_path)
  40. address command 'Echo "0" >' group_path || '/.lowest'
  41. address command 'Echo "0" >' group_path || '/.next'
  42. address command 'Echo "' || group_name || ' 60" >>' newsgroups
  43. exit 0
  44.  
  45.  
  46. /*@<pathonly><makepath><canexist><axconfig>*/
  47.  
  48. /* return the non-file part of a pathname */
  49.  
  50. pathonly: procedure
  51.   parse arg path
  52.   if (words(path) > 0) & (right(path,1) ~= ':') then do
  53.     if right(path,1) = '/' then path= left(path,length(path)-1)
  54.     if lastpos('/',path) > lastpos(':',path) then path= left(path,lastpos('/',path)-1)
  55.                                              else path= left(path,lastpos(':',path))
  56.     end
  57.   return path
  58.  
  59.  
  60.  
  61. /* create all non-existant directories in a path */
  62.  
  63. makepath: procedure
  64.   parse arg path
  65.   if right(path,1) = '/' then path= left(path,length(path)-1)
  66.   if ~exists(path) then do
  67.     call makepath( pathonly(path) )
  68.     address command 'MakeDir NAME "'path'"'
  69.     end
  70.   return 0
  71.  
  72.  
  73. /*
  74.  * return   1  if the device or volume name in given pathname exists
  75.  *             or if no device or volume was present (current device)
  76.  *          0  if the device or volume name does not exist
  77.  */
  78.  
  79. canexist: procedure
  80.   parse upper arg path
  81.   if pos(':',path) < 1 then return 1 /* current device */
  82.   call pragma('W','N')
  83.   return exists( left(path,lastpos(':',path)) )
  84.  
  85.  
  86.  
  87. /* get an AXsh configuration value */
  88.  
  89. axconfig: procedure
  90.   tempfile = "T:axconfig." || pragma('Id')
  91.   rc_index  = "AXsh:rexx/rc.index"
  92.   var_val=""; var_file=""; var_defval="";
  93.  
  94.   parse upper arg var_name
  95.   if left(var_name,1) ~= '%' then var_name = '%'var_name
  96.   if right(var_name,1) ~= ':' then var_name = var_name':'
  97.  
  98.   if open('idx',rc_index,'Read') then do
  99.     do until (eof('idx') | (var_file~=''))
  100.       str= translate(readln('idx'),' ',d2c(9))
  101.       if words(str) > 0 then do
  102.         parse var str vname ' ' fname '"' defval '"'
  103.         if upper(vname) = var_name then do
  104.           var_file= strip(fname,'B',' 'd2c(9))
  105.           var_defval= defval
  106.           end
  107.         end
  108.       end
  109.     call close('idx')
  110.     end
  111.   else say 'Could not read "'rc_index'"'
  112.  
  113.   if words(var_file) > 0 then do
  114.     if open('rc',var_file,'Read') then do
  115.       do until (eof('rc') | (var_val~=''))
  116.         str= translate(readln('rc'),' ',d2c(9))
  117.         if upper(word(str,1)) = var_name then var_val = strip(readln('rc'),'B',' 'd2c(9))
  118.         end
  119.       call close('rc')
  120.       end
  121.     else say 'Could not examine "'var_file'" for' var_name
  122.     end
  123.   else do
  124.     if words(var_defval) > 0 then var_val= var_defval
  125.     else say 'No such config variable:' var_name
  126.     end
  127.  
  128.   return var_val
  129.  
  130.